{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "76459d86-5b79-4800-b97d-2c48d791bad8",
   "metadata": {},
   "source": [
    "# Kolmogorov–Smirnov Test"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "66d568eb-6d35-49c0-850d-0f9d33f988f9",
   "metadata": {},
   "source": [
    "In statistics, the Kolmogorov–Smirnov test (K–S test or KS test) is a nonparametric test of the equality of continuous (or discontinuous), one-dimensional probability distributions that can be used to compare two samples (two-sample K–S test). In essence, the test answers the question \"What is the probability that these two sets of samples were drawn from the same (but unknown) probability distribution?\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "57fec7c0-1b72-4095-b55f-d6d59f081830",
   "metadata": {},
   "outputs": [],
   "source": [
    "import metaspore as ms\n",
    "import numpy as np\n",
    "import sys\n",
    "\n",
    "sys.path.append('../../') "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9e54e563-7ed5-439c-9305-55ccd7da3ea7",
   "metadata": {},
   "source": [
    "#### 1. Load prediction results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "08969ece-d200-4b6c-9814-ead1387a5634",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: An illegal reflective access operation has occurred\n",
      "WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.12-3.1.2.jar) to constructor java.nio.DirectByteBuffer(long,int)\n",
      "WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform\n",
      "WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations\n",
      "WARNING: All illegal access operations will be denied in a future release\n",
      "22/06/07 08:21:27 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n",
      "Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties\n",
      "Setting default log level to \"WARN\".\n",
      "To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).\n",
      "22/06/07 08:21:27 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.\n",
      "/opt/spark/python/pyspark/sql/pandas/conversion.py:87: UserWarning: toPandas attempted Arrow optimization because 'spark.sql.execution.arrow.pyspark.enabled' is set to true; however, failed by the reason below:\n",
      "  Unsupported type in conversion to Arrow: VectorUDT\n",
      "Attempting non-optimization as 'spark.sql.execution.arrow.pyspark.fallback.enabled' is set to true.\n",
      "  warnings.warn(msg)\n",
      "                                                                                \r"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>isDefault</th>\n",
       "      <th>features</th>\n",
       "      <th>rawPrediction</th>\n",
       "      <th>probability</th>\n",
       "      <th>prediction</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>[1000.0, 3.0, 6.97, 30.87, 1.0, 2.0, 123318.0,...</td>\n",
       "      <td>[2.337995530153171, -2.337995530153171]</td>\n",
       "      <td>[0.911975306477623, 0.088024693522377]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>[1000.0, 3.0, 15.99, 35.16, 3.0, 14.0, 215340....</td>\n",
       "      <td>[-0.10965281459904996, 0.10965281459904996]</td>\n",
       "      <td>[0.4726142307997735, 0.5273857692002265]</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>[1000.0, 3.0, 18.24, 36.28, 4.0, 19.0, 64536.0...</td>\n",
       "      <td>[0.32907556139404964, -0.32907556139404964]</td>\n",
       "      <td>[0.5815344297028524, 0.41846557029714754]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>[1500.0, 3.0, 11.49, 49.46, 2.0, 9.0, 212874.0...</td>\n",
       "      <td>[0.8718348674582469, -0.8718348674582469]</td>\n",
       "      <td>[0.7051273522619355, 0.2948726477380646]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>[1500.0, 3.0, 13.49, 50.9, 3.0, 11.0, 89676.0,...</td>\n",
       "      <td>[-0.1605600898253861, 0.1605600898253861]</td>\n",
       "      <td>[0.45994598843603185, 0.5400540115639682]</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>[1500.0, 3.0, 16.99, 53.48, 4.0, 17.0, 6600.0,...</td>\n",
       "      <td>[-0.4225961586637862, 0.4225961586637862]</td>\n",
       "      <td>[0.39589567937414427, 0.6041043206258557]</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0</td>\n",
       "      <td>[1600.0, 3.0, 10.64, 52.11, 2.0, 8.0, 203091.0...</td>\n",
       "      <td>[0.9316509455109415, -0.9316509455109415]</td>\n",
       "      <td>[0.7174101064763352, 0.2825898935236648]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0</td>\n",
       "      <td>[1600.0, 3.0, 13.53, 54.32, 2.0, 9.0, 65718.0,...</td>\n",
       "      <td>[1.2519325976063975, -1.2519325976063975]</td>\n",
       "      <td>[0.777634223779675, 0.22236577622032502]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0</td>\n",
       "      <td>[1800.0, 3.0, 12.73, 60.42, 2.0, 9.0, 61357.0,...</td>\n",
       "      <td>[2.783424036088894, -2.783424036088894]</td>\n",
       "      <td>[0.9417734897923757, 0.05822651020762423]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0</td>\n",
       "      <td>[1800.0, 3.0, 19.99, 66.89, 5.0, 20.0, 234119....</td>\n",
       "      <td>[0.2507570877638907, -0.2507570877638907]</td>\n",
       "      <td>[0.5623628372077925, 0.4376371627922075]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   isDefault                                           features  \\\n",
       "0          0  [1000.0, 3.0, 6.97, 30.87, 1.0, 2.0, 123318.0,...   \n",
       "1          0  [1000.0, 3.0, 15.99, 35.16, 3.0, 14.0, 215340....   \n",
       "2          0  [1000.0, 3.0, 18.24, 36.28, 4.0, 19.0, 64536.0...   \n",
       "3          1  [1500.0, 3.0, 11.49, 49.46, 2.0, 9.0, 212874.0...   \n",
       "4          0  [1500.0, 3.0, 13.49, 50.9, 3.0, 11.0, 89676.0,...   \n",
       "5          1  [1500.0, 3.0, 16.99, 53.48, 4.0, 17.0, 6600.0,...   \n",
       "6          0  [1600.0, 3.0, 10.64, 52.11, 2.0, 8.0, 203091.0...   \n",
       "7          0  [1600.0, 3.0, 13.53, 54.32, 2.0, 9.0, 65718.0,...   \n",
       "8          0  [1800.0, 3.0, 12.73, 60.42, 2.0, 9.0, 61357.0,...   \n",
       "9          0  [1800.0, 3.0, 19.99, 66.89, 5.0, 20.0, 234119....   \n",
       "\n",
       "                                 rawPrediction  \\\n",
       "0      [2.337995530153171, -2.337995530153171]   \n",
       "1  [-0.10965281459904996, 0.10965281459904996]   \n",
       "2  [0.32907556139404964, -0.32907556139404964]   \n",
       "3    [0.8718348674582469, -0.8718348674582469]   \n",
       "4    [-0.1605600898253861, 0.1605600898253861]   \n",
       "5    [-0.4225961586637862, 0.4225961586637862]   \n",
       "6    [0.9316509455109415, -0.9316509455109415]   \n",
       "7    [1.2519325976063975, -1.2519325976063975]   \n",
       "8      [2.783424036088894, -2.783424036088894]   \n",
       "9    [0.2507570877638907, -0.2507570877638907]   \n",
       "\n",
       "                                 probability  prediction  \n",
       "0     [0.911975306477623, 0.088024693522377]         0.0  \n",
       "1   [0.4726142307997735, 0.5273857692002265]         1.0  \n",
       "2  [0.5815344297028524, 0.41846557029714754]         0.0  \n",
       "3   [0.7051273522619355, 0.2948726477380646]         0.0  \n",
       "4  [0.45994598843603185, 0.5400540115639682]         1.0  \n",
       "5  [0.39589567937414427, 0.6041043206258557]         1.0  \n",
       "6   [0.7174101064763352, 0.2825898935236648]         0.0  \n",
       "7   [0.777634223779675, 0.22236577622032502]         0.0  \n",
       "8  [0.9417734897923757, 0.05822651020762423]         0.0  \n",
       "9   [0.5623628372077925, 0.4376371627922075]         0.0  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spark_session = ms.spark.get_session(local=True, app_name='Default estimation KS metric')\n",
    "\n",
    "eval_test_dataset = spark_session.read.parquet('${MY_S3_BUCKET}/risk/tianchi/eval_test_dataset.parquet')\n",
    "eval_test_dataset.limit(10).toPandas()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "faa45848-634f-4f87-ab1a-094d3ab7b57f",
   "metadata": {},
   "source": [
    "#### 2. Extract label and prediction: \n",
    "We only use the column 'isDefault' as label and the second value of probability as prediction."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1dbaac0d-8ed8-4667-9596-b87e5d7354c1",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "                                                                                \r"
     ]
    }
   ],
   "source": [
    "label = np.array(eval_test_dataset.select('isDefault').collect()).reshape(-1).astype(np.float32)\n",
    "prediction = np.array(eval_test_dataset.select('probability').collect())[:, :, 1].reshape(-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5ce9bb7d-2079-49a4-9355-98076d18aec8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "label:  [0. 0. 0. 1. 0. 1. 0. 0. 0. 0.]\n",
      "prediction:  [0.08802469 0.52738577 0.41846557 0.29487265 0.54005401 0.60410432\n",
      " 0.28258989 0.22236578 0.05822651 0.43763716]\n"
     ]
    }
   ],
   "source": [
    "print('label: ', label[0:10])\n",
    "print('prediction: ', prediction[0:10])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3e14f2d-5bad-4222-9fa7-f91ff8043481",
   "metadata": {},
   "source": [
    "#### 3. Calculate KS statistic:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "57130b31-fc55-4b9a-8f3c-1c03883ca5cd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KS statistic:  0.3408877950211097\n"
     ]
    }
   ],
   "source": [
    "from common.ks_utils import ks_2samp, ks_curve\n",
    "\n",
    "ks = ks_2samp(label, prediction)\n",
    "print(\"KS statistic: \", ks.statistic)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ca1681a-5ada-4060-b30d-edb0d3ebe2d9",
   "metadata": {},
   "source": [
    "#### 4. Plot KS curve:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3c3139c0-9b0b-4662-9ab0-fd2c5c8718a3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "ks_curve(label, prediction)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "488a3ab9-c163-4650-aef2-ddeca7af48a8",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
